CtgProducto = function(){
	var configWindow = {
		add: "ctgProductoAgregarTop",
		edit: "ctgProductoEditarTop",
		save: "ctgProductoGuardarTop",
		remove: "ctgProductoEliminarTop",
		grid: "ctgProductoGrid",
		form: "ctgProductoForm"
	};
	var configWindowBottom = {
			add: "ctgProductoAgregarBottom",
			edit: "ctgProductoEditarBottom",
			save: "ctgProductoGuardarBottom",
			remove: "ctgProductoEliminarBottom"
	};
	return {
		agregarCtgProducto: function(){
			Asi.form.switchButton(configWindow, "add");
			Asi.form.switchButton(configWindowBottom, "add");
//			Ext.getCmp("ctgProductoFechaNacimiento").allowEnable = true;
		},
		editarCtgProducto: function(){
//			Ext.getCmp("ctgProductoFechaNacimiento").allowEnable = false;
			Asi.form.switchButton(configWindow, "edit");
			Asi.form.switchButton(configWindowBottom, "edit");
		},
		eliminarCtgProducto: function(){
			Asi.message.confirmDelete(function(){
				Asi.message.progress("Eliminando Informaci\u00F3n...");
				Ext.Ajax.request({
					timeout: Asi.constants.TIMEOUT_SECONDS,
					url: Asi.constants.CONTEXT_PATH + "/ctgProducto/delete",
					params: {
						ctgProductoId: Asi.utils.getValue("ctgProductoId")
					},
					callback: function(options, success, response){
						Ext.Msg.hide();
						if(success){
							var jsonObject = Asi.utils.ajaxRequestGetJson(response);
							if(jsonObject && jsonObject.success){
								Asi.form.switchButton(configWindow, "remove");
								Asi.form.switchButton(configWindowBottom, "remove");
								Asi.message.alert(jsonObject.message);
								Asi.form.clearAndDisable("ctgProductoForm");
								if(jsonObject.ctgProductos){
			    					Ext.getCmp("ctgProductoGrid").getStore().loadData(jsonObject.ctgProductos);
								}
								return;
							}
							jsonObject = jsonObject || {};
							Asi.message.alertInvalid(jsonObject.message || Asi.constants.DEFAULT_ERROR_MESSAGE);
							return;
						}
						Asi.message.alertInvalid(Asi.constants.DEFAULT_ERROR_MESSAGE);
					}
				});
			});
		},
		guardarCtgProducto: function(){
			Asi.message.progress("Guardando Informaci\u00F3n...");
			Ext.getCmp("ctgProductoForm").getForm().submit({
    			url: Asi.constants.CONTEXT_PATH + "/ctgProducto/save",
    			timeout: Asi.constants.TIMEOUT_SECONDS,
    			params: {
    				uploadFile: Asi.utils.getValue("uploadFile")
//    				"ctgProducto.kycPersonaJuridica.kyc.kycId": AsiKYC.getKycId(),
//    				"ctgProducto.kycPersonaJuridica.kycPersonaJuridicaId": AsiKYC.getKycPersonaJuridicaId()
    			},
    			success: function(form, action){
    				Asi.form.switchButton(configWindow, "save");
    				Asi.form.switchButton(configWindowBottom, "save");
    				Asi.message.alert(action.result.message);
    				Asi.form.setDisable("ctgProductoForm", true);
    				if(action.result.ctgProductos){
    					Ext.getCmp("ctgProductoGrid").getStore().loadData(action.result.ctgProductos);
//    					Ext.getCmp("ctgProductoGrid").getSelectionModel().select(action.result.ctgProductoIndex);
    				}
    			},
    			failure: Asi.form.failureProcedure
   			});
		},
		init: function(config){
			var ctgProductos = config.ctgProductos;
			var configToReturn = {};
			var storeMaterial = new Ext.data.SimpleStore({
				data: config.ctgColor || [],
				fields: [
				         "ctgCatalogoId",
				         "ctgCatalogoNombre",
				         "ctgCatalogoPadre",
				         "ctgCatalogoHijo"
				        ]
			});
			configToReturn.items = [];
			configToReturn.menu = AsiBotones.getBotones(/*AsiKYC.getCtgTipoPersonaCodigo(), AsiKYC.getKycVentanaId()*/);
			configToReturn.items.push({
				flex: 1,
				title: "CATALOGO DE PRODUCTOS",
				autoScroll: true,
				xtype: "panel",
				layout: {
				    type: "vbox",
				    align : "center",
				    pack  : "start"
				},
				defaults: {width: 780, margins: "5 0 5 0"},
				dockedItems: [
					{
						xtype: "toolbar",
						dock: "top",
//						hidden: AsiKYC.getKycVigente() === false,
						items: [
						   '->',
						   {
							   text: "Nuevo",
							   id: "ctgProductoAgregarTop",
							   iconCls: Asi.constants.icons.ADD_ICON,
							   handler: CtgProducto.agregarCtgProducto
						   },{
					    	   text: "Editar",
					    	   id: "ctgProductoEditarTop",
							   iconCls: Asi.constants.icons.EDIT_ICON,
							   handler: CtgProducto.editarCtgProducto,
					       },{
					    	   text: "Guardar",
					    	   id: "ctgProductoGuardarTop",
							   iconCls: Asi.constants.icons.SAVE_ICON,
							   handler: CtgProducto.guardarCtgProducto
					       },{
					    	   text: "Eliminar",
					    	   id: "ctgProductoEliminarTop",
							   iconCls: Asi.constants.icons.DELETE_ICON,
							   handler: CtgProducto.eliminarCtgProducto
					       }
					    ]
					},{
			        	xtype: "toolbar",
			        	dock: "bottom",
//			        	hidden: AsiKYC.getKycVigente() === false,
			        	bodyStyle: "border: solid",
			        	items: [
			        	   '->',
			        	   {
							   text: "Nuevo",
							   id: "ctgProductoAgregarBottom",
							   iconCls: Asi.constants.icons.ADD_ICON,
							   handler: CtgProducto.agregarCtgProducto
						   },{
					    	   text: "Editar",
					    	   id: "ctgProductoEditarBottom",
							   iconCls: Asi.constants.icons.EDIT_ICON,
							   handler: CtgProducto.editarCtgProducto
					       },{
					    	   text: "Guardar",
					    	   id: "ctgProductoGuardarBottom",
							   iconCls: Asi.constants.icons.SAVE_ICON,
							   handler: CtgProducto.guardarCtgProducto
					       },{
					    	   text: "Eliminar",
					    	   id: "ctgProductoEliminarBottom",
							   iconCls: Asi.constants.icons.DELETE_ICON,
							   handler: CtgProducto.eliminarCtgProducto
					       }
		        	    ]
			        }
	            ],
				items: [
					{
						xtype: "grid",
						id: "ctgProductoGrid",
						height: 150,
						minHeight: 150,
						collapsible : true,
						store: new Ext.data.SimpleStore({
					    	data: ctgProductos || [],
					    	fields: [
								"ctgProductoId",
								"ctgProductoNombre",
								"ctgProductoDescripcion",
								"ctgProductoActivo",
								"ctgProductoCodigo",
								"ctgProductoPrecio",
								"ctgProductoTipo",
								"ctgProductoImage",
								"ctgProductoColor.ctgCatalogoId",
								"ctgProductoColor.ctgCatalogoNombre",
								"ctgProductoMaterial.ctgCatalogoId",
								"ctgProductoMaterial.ctgCatalogoNombre",
								"ctgProductoTamanio.ctgCatalogoId",
								"ctgProductoTamanio.ctgCatalogoNombre",
								"ctgProductoGarantia.ctgCatalogoId",
								"ctgProductoGarantia.ctgCatalogoNombre",
								"ctgProductoGarantia.ctgCatalogoDetallar",
			    	        ]
					    }),
					    columns: [
//					        {header: "Imagen", flex:1, minWidth: 120, dataIndex: "ctgProductoImage",
//					        	renderer: function(value){
//					                return '<img src="' + value + '" />';
//					            }
//					        },
				            {header: "Nombre",  dataIndex: "ctgProductoNombre", flex:1, minWidth: 120},
				            {header: "Codigo",  dataIndex: "ctgProductoCodigo", flex:1, width: 120},
				            {header: "Precio",  dataIndex: "ctgProductoPrecio", align: "right", flex:1, width: 40},
				            {header: "Activo",  dataIndex: "ctgProductoActivo", align: "right", flex:1,  width: 40,
				            	renderer: function(value){
		                        	if(value == 1){
		                        		return 'ACTIVO'
		                        	}
		                        	if (value == 0){
		                        		return 'INACTIVO'
		                        	}
		                        }
				            
				            }
				            

					    ],

					    listeners: {
					    	selectionchange: function(model, records){
					    		if(!records || records.length <= 0) return;
					    		var record = records[0];
					    		if(record != null){

					    			Asi.form.setValues("ctgProductoForm", record.data);
					    			Asi.form.setDisable("ctgProductoForm");
					    		}
					    		Asi.form.switchButton(configWindow, "rowclick");
					    		Asi.form.switchButton(configWindowBottom, "rowclick");
					    	},
					    	afterrender: function(){
					    		if(this.store.data.items.length > 0) Asi.grid.selectFirstRow(this);
					    		Asi.form.switchButton(configWindow, "cancelNotClear");
					    		Asi.form.switchButton(configWindowBottom, "cancelNotClear");
					    	}
					    }
					},{
			        	xtype: "form",
						id: "ctgProductoForm",
						flex: 1,
					    border: false,
					    autoScroll: true,
						layout: {
							type: "table",
							columns: 6,
							style : {
								width : "730px",
								"margin-top" : "5px",
								"margin-bottom" : "40px"
							},
							align : "center"
						},
//						buttons : [ {
//							text : "Buscar",
//							handler : Menu.digitalizar
//						} ],
						defaults: {
							width: 230,
							selectOnFocus: true,
							enforceMaxLength: true,
							maxLength: 200,
							typeAhead: true,
							minChars: 1,
							queryMode: "local",
							forceSelection: true,
							allowEnable: true,
							colspan: 2
						},
						items: [
				        	 {
								xtype: "label",
								text: "DATOS DE PRODUCTO",
								cls: "x-form-item label_header",
								colspan: 8,
								width: 730
							},
							{xtype: "label", text: "Nombre", cls: "x-form-item label_spacing"},
							{xtype: "label", text: "C\u00f3digo", cls: "x-form-item label_spacing"},
							{xtype: "label", text: "Precio", cls: "x-form-item label_spacing"},
							{
								xtype: "textfield",
								id: "ctgProductoNombre",
								name: "ctgProducto.ctgProductoNombre",
								maxLength: 100
							},{
								xtype: "textfield",
								id: "ctgProductoCodigo",
								name: "ctgProducto.ctgProductoCodigo",
								maxLength: 100
							},{
								xtype: "textfield",
								id: "ctgProductoPrecio",
								name: "ctgProducto.ctgProductoPrecio",
								maxLength: 100
							},
							{xtype: "label", text: "Descripci\u00f3n", cls: "x-form-item label_spacing", colspan: 4},
							{xtype: "label", text: "Tipo Producto", cls: "x-form-item label_spacing"},
							{
								xtype: "textarea",
								id: "ctgProductoDescripcion",
								name: "ctgProducto.ctgProductoDescripcion",
								maxLength: 1000,
								colspan: 4,
								width: 484
							},{
								xtype: "combo",
								id: "ctgProductoTipo",
								name: "ctgProducto.ctgProductoTipo",
								store: new Ext.data.SimpleStore({
									data: Asi.combos.cortinasalfombras() || [],
									fields: ["id", "descripcion"]
								}),
								displayField: "descripcion",
								allowBlank: false,
								valueField: "id",
								listeners: {
									change: function(){
										if(Ext.getCmp("ctgProductoTipo").getValue() == 1){
											Asi.combos.loadData("ctgProductoMaterialId", config.ctgMaterialCortina);
											Asi.combos.loadData("ctgProductoTamanioId", config.ctgTamanioCortina);
										} else {
											Asi.combos.loadData("ctgProductoMaterialId", config.ctgMaterialAlfombra);
											Asi.combos.loadData("ctgProductoTamanioId", config.ctgTamanioAlfombra);
										}
									}
								}
							},
							{xtype: "label", text: "Color", cls: "x-form-item label_spacing"},
							{xtype: "label", text: "Material", cls: "x-form-item label_spacing"},
							{xtype: "label", text: "Tama\u00f1o", cls: "x-form-item label_spacing"},
							{
								xtype: "combo",
								id: "ctgProductoColorId",
								name: "ctgProductoColor.ctgCatalogoId",
								store: new Ext.data.SimpleStore({
									data: config.ctgColor || [],
									fields: [
									         "ctgCatalogoId",
									         "ctgCatalogoNombre",
									         "ctgCatalogoPadre",
									         "ctgCatalogoHijo"
									        ]
								}),
								displayField: "ctgCatalogoNombre",
								valueField: "ctgCatalogoId",
								allowBlank: false,
							},{
								xtype: "combo",
								id: "ctgProductoMaterialId",
								name: "ctgProductoMaterial.ctgCatalogoId",
								store: new Ext.data.SimpleStore({
									data: [],
									fields: [
									         "ctgCatalogoId",
									         "ctgCatalogoNombre",
									         "ctgCatalogoPadre",
									         "ctgCatalogoHijo"
									        ]
								}),
								displayField: "ctgCatalogoNombre",
								valueField: "ctgCatalogoId",
								allowBlank: false
							},{
								xtype: "combo",
								id: "ctgProductoTamanioId",
								name: "ctgProductoTamanio.ctgCatalogoId",
								store: new Ext.data.SimpleStore({
									data: [],
									fields: [
									         "ctgCatalogoId",
									         "ctgCatalogoNombre",
									         "ctgCatalogoPadre",
									         "ctgCatalogoHijo"
									        ]
								}),
								displayField: "ctgCatalogoNombre",
								valueField: "ctgCatalogoId",
								allowBlank: false
							},
							
							{xtype: "label", text: "ACTIVO", cls: "x-form-item label_spacing", colspan: 3},
							{xtype: "label", text: "TIEMPO DE GARANTIA", cls: "x-form-item label_spacing", colspan: 3},
							
							{
								xtype: "combo",
								id: "ctgProductoActivo",
								name: "ctgProducto.ctgProductoActivo",
								colspan: 3,
								store: new Ext.data.SimpleStore({
									data: Asi.combos.yesnoArray() || [],
									fields: [
									         "id",
									         "descripcion"
									        ]
								}),
								displayField: "descripcion",
								valueField: "id",
								allowBlank: false,
								colspan: 3
							},
							
							{
								xtype: "combo",
								id: "garantiaTiempo",
								name: "ctgProductoGarantia.ctgCatalogoId",
								store: new Ext.data.SimpleStore({
									data: Asi.combos.getCtgGarantias() || [],
									fields: [
									         "ctgCatalogoId",
									         "ctgCatalogoNombre",
									         "ctgCatalogoPadre",
									         "ctgCatalogoHijo"
									        ]
								}),
								displayField: "ctgCatalogoNombre",
								valueField: "ctgCatalogoId",
								allowBlank: false,
								colspan: 3
							},
							{xtype: "label", text: "DETALLE GARANTIA", cls: "x-form-item label_spacing", colspan: 6},
							{
								xtype: "textarea",
								id: "garantiaDetalle",
								name: "ctgProductoGarantia.ctgCatalogoDetallar",
								readOnly: true,
								maxLength: 1000,
								colspan: 6,
								width: 730
							},
							
							{
							    xtype: "filefield",
							    id: "uploadFile",
							    name: "uploadFile",
							    fieldLabel: "Archivo",
							    width: 265,
							    buttonText: "",
							    tooltip: "Seleccionar Archivo",
							    buttonConfig: {
							    	iconCls: Asi.constants.icons.OPEN_ICON,
							    	tooltip: "Seleccionar Archivo"
					    		}},{
									xtype: "hidden",
									id: "ctgProductoId",
									name: "ctgProducto.ctgProductoId"
							}

						]
			        }
				]
				
			});
			return configToReturn;
		}
	};
}();